// @Title  请填写文件名称（需要改）
// @Description  请填写文件描述（需要改）
// @Author  请填写自己的真是姓名（需要改）  2021/6/30 12:53
// @Update  请填写自己的真是姓名（需要改）  2021/6/30 12:53
package initialize

import (
	"gin_example/api"
	. "gin_example/global"
	"gin_example/middleware"
	"gin_example/model/configs"
	ginzap "github.com/gin-contrib/zap"
	"github.com/gin-gonic/gin"
	swaggerFiles "github.com/swaggo/files"
	ginSwagger "github.com/swaggo/gin-swagger"
	"net/http"
	"strconv"
	"time"
)

func initGin(ginConfig configs.GinConfig) {

	// Disable Console Color
	// gin.DisableConsoleColor()

	// 使用默认中间件创建一个gin路由器
	// logger and recovery (crash-free) 中间件
	//router := gin.Default()
	router := gin.New()

	// 配置模板
	//router.LoadHTMLGlob("templates/**/*")
	//加载静态文件
	router.Static("/assets", "../assets")
	//router.StaticFS("/more_static", http.Dir("my_file_system"))
	//router.StaticFile("/favicon.ico", "./resources/favicon.ico")


	router.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))



	// 注册zap相关中间件
	zapLogger := Logger

	// 使用zap日志库
	router.Use(ginzap.Ginzap(zapLogger, time.RFC3339, true))
	router.Use(ginzap.RecoveryWithZap(zapLogger, true))

	//全局拦截
	router.Use(middleware.GlobalIntercepter)

	//全局异常处理
	//router.Use(gin.Recovery())
	router.Use(middleware.Recovery)
	//404 處理
	router.NoRoute(middleware.Deal404)
	router.NoMethod(middleware.Deal404)

	api.InitUserRouter(router)

	router.NoRoute(func(c *gin.Context) {
		c.JSON(http.StatusNotFound, gin.H{"msg": "404,not found!"})

	})

	// 默认启动的是 8080端口，也可以自己定义启动端口
	Logger.Info("------gin init ,listen on port " + strconv.Itoa(ginConfig.Port)  +"--------")
	router.Run(":"+strconv.Itoa(ginConfig.Port))


}

